package cm

import (
	"database/sql/driver"
	"fmt"
	"github.com/golang-module/carbon"
	"time"
)

// MyTime 自定义时间类型
type MyTime struct {
	carbon.Carbon
}

// Value 实现 driver.Valuer 接口，用于 SQL 插入
func (t MyTime) Value() (driver.Value, error) {
	if t.IsZero() {
		return nil, nil
	}
	return t.Time, nil
}

// Scan 实现 sql.Scanner 接口，用于 SQL 查询结果填充
func (t *MyTime) Scan(v interface{}) error {
	time, ok := v.(time.Time)
	if !ok {
		return fmt.Errorf("invalid time type")
	}
	t.Carbon = carbon.FromStdTime(time)
	return nil
}
